package xframe.util;

import org.apache.log4j.Logger;

import java.util.Hashtable;
import java.util.Enumeration;
import java.io.File;

public class XMLQuery
{
    private Hashtable xmlSqllMap;
    //xml ������ ������ ��¥�� ������ �������� ���� ������ ���� ������ �Ǵ��Ѵ�.
    private long lastmodifiedDate;
    static Logger log = Logger.getLogger(XMLQuery.class);

    public XMLQuery(String path) throws XMLQueryException {
        load(path, (new File(path)).lastModified());
    }

    /**
     * @see xml�� ó�� ã���� �ش� ������ ������ �޸𸮿� �ø���.
     * @param xmlFile  : �ش� ������ Ű��
     * @param lastmodified  : ���� ������ �ֱ� xml  ������ ����� �ð�
     */
    private void load(String xmlFile, long lastmodified) throws XMLQueryException {
        lastmodifiedDate = lastmodified;
        xmlSqllMap = XMLReader.putQuery(xmlFile);
        //System.out.println(xmlSqllMap);
        UtilMaster.consoleOut("xframe.console.VTL.init.show","XML DATA:\n"+xmlSqllMap);
        System.out.println("Translate the VTL statement :\n"+"[Query XML reloaded completed.....]\n Read XML File:"+xmlFile);
    }

    /**
     * @see xml�� ������ ��ȯ�Ҷ� ���Ǵ� �Լ�
     * @param name  : �ش� xml �±��� ���� ��ȯ�Ѵ�.
     * @return String :  �±��� ���� �����Ѵ�.
     */
    public String getXML(String name){
        return (String)xmlSqllMap.get(name);
    }

    /**
     * @see xml�� ������ String���� ��ȯ�ؼ� �����Ѵ�.
     * @return String :  �±��� ���� �����Ѵ�.
     */
	public String toString(){
        return xmlSqllMap.toString();
    }

    /**
     * @see xml ������ ����� �ð��� ��ȯ�ϴ� �Լ�
     * @return long : �ֱ� ����� �ð��� ��ȯ�Ѵ�.
     */
    public long getLastmodifiedDate() {
        return lastmodifiedDate;
    }

    /**
     * @see xml ���ϳ��� �о�帰 �±׸� Collection Ÿ������ ��ȯ�Ѵ�.
     * @return String[] : xml ���� �±׸� �迭�� ��ȯ�Ѵ�.
     */
    public String[] getKeyList(){
        Enumeration enu =  xmlSqllMap.keys();
        String arr[]=new String[xmlSqllMap.size()];
        int i =0;
        while (enu.hasMoreElements()) {
            arr[i] = (String)enu.nextElement();
            i++;
        }
        return arr;
    }
}
